/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package practica1.ui.tablaPoblacion;

import practica1.language.Language;

/**
 * Factoría para crear el modelo de la tabla
 * @author Miguel González - Ceura
 */
public class ModeloPoblacionFactory {

    /**
     * Devuelve un modelo de la tabla por defecto
     * @return ModeloPoblacionTabla
     */
    public static ModeloPoblacionTabla crearModeloTablaDefecto() {
        
        String numDias[] = new String[]{"1","2","3","4","5","6","7","8","9","10"
                ,"11","12","13","14","15","16","17","18","19","20","21","22","23"
                ,"24","25","26","27","28","29","30"};
        
        //Cargamos las dosis de comida automáticamente
        String dosisComida[] = crearDosisComidaModeloDefecto(150,150,15,150);
        
        String tamanioPoblacion[] = new String[30];
        for(int i=0; i<30; i++) {
            tamanioPoblacion[i] = "";
        }

        String bacteriasMuertas[] = new String[30];
        for(int i=0; i<30; i++) {
            bacteriasMuertas[i] = "";
        }
        
        String temperatura[] = new String[30];
        
        for(int i=0; i<30; i++) {
            temperatura[i] = "";
        }
        
        String datosModelo[][] = new String[30][5];
        
        for(int i=0; i<30; i++) {
            datosModelo[i][0] = numDias[i];
            datosModelo[i][1] = tamanioPoblacion[i];
            datosModelo[i][2] = bacteriasMuertas[i];
            datosModelo[i][3] = temperatura[i];
            datosModelo[i][4] = dosisComida[i];
        }
        
        
        return new ModeloPoblacionTabla(datosModelo, new String[]{
            Language.getI().getP("DIA"),
            Language.getI().getP("TAMANIO_POBLACION"),
            Language.getI().getP("BACTERIAS_MUERTAS"),
            Language.getI().getP("TEMPERATURA"),
            Language.getI().getP("DOSIS_COMIDA")});
    }
    
    /**
     * Devuelve un array de String con los cálculos de las dosis de comida
     * @param alimentoInicial Alimento inicial
     * @param alimentoMax Alimento máximo
     * @param diaMax Día máximo
     * @param alimentoFinal Alimento Final
     * @return String[] dosisComida
     */
    public static String[] crearDosisComidaModeloDefecto(
            int alimentoInicial, int alimentoMax, int diaMax, int alimentoFinal) {
        String []dosisComida = new String[30];
        
        //Cuenta incremental hasta diaMax
        dosisComida[0] = Integer.toString(alimentoInicial);
        if(diaMax != 1) {
            float incrementar = (alimentoMax - alimentoInicial) / (float)(diaMax - 1);
            for(int i=1; i < diaMax; i++) {
                dosisComida[i] = Integer.toString(alimentoInicial +
                        (int)(Math.round(incrementar * i)));
            }
        }
        
        //Cuenta deincremental hasta el último día
        dosisComida[29] = Integer.toString(alimentoMax);
        if(diaMax != 29) {
            float reducir = (alimentoMax - alimentoFinal) / (float)(30 - diaMax);
            for(int i=diaMax; i < 30; i++) {
                dosisComida[i] = Integer.toString(alimentoMax - 
                        (int)(Math.round(reducir * (i - diaMax + 1))));
            }
        }
        
        return dosisComida;
    }
}
